
 1000  *SAVE S.BIG CATALOG DISPLAY
 1010  *--------------------------------
 1020  CAT.SECTOR .EQ 0
 1030  CAT.TRACK  .EQ 1
 1040  CNTR       .EQ 2
 1050  PNTR       .EQ 3,4
 1060  TS.TRACK   .EQ 5
 1070  TS.SECTOR  .EQ 6
 1080  *---------------------------------
 1090  COUT   .EQ $FDED
 1100  CROUT  .EQ $FD8E
 1110  PRBYTE .EQ $FDDA
 1120  ENTER.RWTS .EQ $3D9
 1130  *--------------------------------
 1140  BIG.CATALOG.DISPLAY
 1150         LDA #15
 1160         STA CAT.SECTOR
 1170         LDA #17
 1180         STA CAT.TRACK
 1190  .1     JSR READ.NEXT.CATALOG.SECTOR
 1200         BPL .2       GOT A SECTOR
 1210  .4     RTS
 1220  .2     LDA #BUF
 1230         STA IOB.BUFFER
 1240         LDA /BUF
 1250         STA IOB.BUFFER+1
 1260  *--------------------------------
 1270         LDA #CAT+11
 1280         STA PNTR
 1290         LDA /CAT+11
 1300         STA PNTR+1
 1310         LDA #7
 1320         STA CNTR
 1330  .3     JSR DISPLAY.DATA.FOR.ONE.FILE
 1340         BCS .4       ...END OF CATALOG
 1350         LDA PNTR
 1360         ADC #35
 1370         STA PNTR
 1380         LDA PNTR+1
 1390         ADC #0
 1400         STA PNTR+1
 1410         DEC CNTR
 1420         BNE .3
 1430         JSR CROUT
 1440         JMP .1
 1450  *--------------------------------
 1460  DISPLAY.DATA.FOR.ONE.FILE
 1470         LDY #0
 1480         LDA (PNTR),Y
 1490         BNE .1
 1500         SEC
 1510         RTS
 1520  .1     BPL .15
 1530         LDY #32
 1540         LDA (PNTR),Y      REAL TRACK OF DELETED FILE
 1550         LDY #0
 1560  .15    STA TS.TRACK
 1570         INY
 1580         LDA (PNTR),Y
 1590         STA TS.SECTOR
 1600         INY
 1610         LDA (PNTR),Y      GET FILE TYPE
 1620         JSR PRBYTE
 1630         LDA #"-"
 1640         JSR COUT
 1650         JSR COUT
 1660  .2     INY
 1670         LDA (PNTR),Y      PRINT FILE NAME
 1680         JSR COUT
 1690         CPY #31           DON'T PRINT LAST CHAR OF NAME
 1700         BCC .2
 1710         INY
 1720         INY
 1730         LDA (PNTR),Y
 1740         JSR PRBYTE
 1750         INY
 1760         LDA (PNTR),Y
 1770         JSR PRBYTE
 1780  *---READ T/S LIST----------------
 1790         LDX TS.SECTOR
 1800         CPX #16
 1810         BCS .9
 1820         LDY TS.TRACK
 1830         CPY #35
 1840         BCS .9
 1850         JSR READTS
 1860         JSR DISPLAY.TS.LIST
 1870  *---READ FIRST DATA SECTOR-------
 1880         LDY BUF+12
 1890         CPY #35
 1900         BCS .9
 1910         LDX BUF+13
 1920         CPX #16
 1930         BCS .9
 1940         JSR READTS
 1950  *---DISPLAY FIRST 64 BYTES-------
 1960         LDY #0
 1970         JSR DISPLAY.NEXT.16
 1980         JSR DISPLAY.NEXT.16
 1990         JSR DISPLAY.NEXT.16
 2000         JSR DISPLAY.NEXT.16
 2010  .9     JSR CROUT
 2020         CLC
 2030         RTS
 2040  *--------------------------------
 2050  DISPLAY.TS.LIST
 2055    .LIST OFF
 2060         JSR CROUT
 2070         LDA TS.TRACK
 2080         LDX TS.SECTOR
 2090         JSR PR.TS
 2100         LDA #":"
 2110         JSR COUT
 2120         LDA #" "
 2130         JSR COUT
 2140         JSR COUT
 2150         LDY #0
 2160  .1     LDA BUF+13,Y      SECTOR
 2170         TAX
 2180         LDA BUF+12,Y      TRACK
 2190         BEQ .2       ...END OF LIST
 2200         JSR PR.TS
 2210         LDA #" "
 2220         JSR COUT
 2230         TYA
 2240         AND #$0F
 2250         CMP #$0E
 2260         BNE .3
 2270         JSR SEVEN.SPACES
 2280  .3     INY
 2290         INY
 2300         CPY #-12
 2310         BCC .1
 2320  .2     RTS
 2325     .LIST ON
 2330  *--------------------------------
 2340  DISPLAY.NEXT.16
 2345     .LIST OFF
 2350         JSR SEVEN.SPACES
 2360  .1     LDA BUF,Y
 2370         JSR PRBYTE
 2380         LDA #" "
 2390         JSR COUT
 2400         INY
 2410         TYA
 2420         AND #$0F
 2430         BNE .1
 2440         TYA
 2450         SEC
 2460         SBC #16
 2470         TAY
 2480  .2     LDA BUF,Y
 2490         ORA #$80
 2500         CMP #$A0
 2510         BCS .3
 2520         LDA #"."
 2530  .3     JSR COUT
 2540         INY
 2550         TYA
 2560         AND #$0F
 2570         BNE .2
 2580         RTS
 2585    .LIST ON
 2590  *--------------------------------
 2600  SEVEN.SPACES
 2605    .LIST OFF
 2610         JSR CROUT
 2620         LDA #" "
 2630         LDX #7
 2640  .4     JSR COUT
 2650         DEX
 2660         BNE .4
 2670         RTS
 2675    .LIST ON
 2680  *--------------------------------
 2690  PR.TS
 2695    .LIST OFF
 2700         JSR PRBYTE
 2710         LDA #"-"
 2720         JSR COUT
 2730         TXA
 2740         ORA #"0"
 2750         CMP #$BA
 2760         BCC .1
 2770         ADC #6
 2780  .1     JMP COUT
 2785    .LIST ON
 2790  *--------------------------------
 2800  *   READ NEXT CATALOG SECTOR
 2810  *--------------------------------
 2820  READ.NEXT.CATALOG.SECTOR
 2830         LDA #CAT
 2840         STA IOB.BUFFER
 2850         LDA /CAT
 2860         STA IOB.BUFFER+1
 2870         LDX CAT.SECTOR
 2880         LDY CAT.TRACK
 2890         JSR READTS
 2900         DEC CAT.SECTOR
 2910         RTS
 2920  *--------------------------------
 2930  READTS STX IOB.SECTOR
 2935     .LIST OFF
 2940         STY IOB.TRACK
 2950  .2     LDA /IOB
 2960         LDY #IOB
 2970         JSR ENTER.RWTS
 2980         BCS .2       ...TRY AGAIN IF ERROR
 2990         RTS
 2995     .LIST ON
 3000  *---------------------------------
 3010  *      IOB FOR RWTS CALLS
 3020  *---------------------------------
 3030  IOB
 3035     .LIST OFF
 3040  IOB.TYPE   .HS 01   0--MUST BE $01
 3050  IOB.SLOT16 .HS 60   1--SLOT # TIMES 16
 3060  IOB.DRIVE  .HS 01   2--DRIVE # (1 OR 2)
 3070  IOB.VOLUME .HS 00   3--DESIRED VOL # (0 MATCHES ANY)
 3080  IOB.TRACK  .BS 1    4--TRACK # (0 TO 34)
 3090  IOB.SECTOR .BS 1    5--SECTOR # (0 TO 15)
 3100  IOB.PNTDCT .DA DCT  6--ADDRESS OF DCT
 3110  IOB.BUFFER .DA BUF  8--ADDRESS OF DATA
 3120  IOB.SECTSZ .DA 256 10--# BYTES IN A SECTOR
 3130  IOB.OPCODE .HS 01  12--0=SEEK, 1=READ, 2=WRITE, OR 4=FORMAT
 3140  IOB.ERROR  .BS 1   13--ERROR CODE: 0, 8, 10, 20, 40, 80
 3150  IOB.ACTVOL .BS 1   14--ACTUAL VOLUME # FOUND
 3160  IOB.PRVSLT .HS 60  15--PREVIOUS SLOT #
 3170  IOB.PRVDRV .HS 01  16--PREVIOUS DRIVE #
 3175     .LIST ON
 3180  *--------------------------------
 3190  DCT    .HS 0001EFD8
 3200  *--------------------------------
 3210  BUF    .BS 256
 3220  CAT    .BS 256
 3230  *--------------------------------
 3235     .LIST OFF

